package day06.KeJianLianXi;

public class MyBinarySearchDemo {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5,6,7,8,9,10};
        int number = 5;
        //1.我现在要做什么？    -二分查询
        //2.我做这件事需要什么？   -数组，元素
        //3.我做完了要不要把结果返还调用者  - 把索引返还给调用者
        int index = binarySearchForIndex(arr,number);
        System.out.println(index);
    }

    private static int binarySearchForIndex(int[] arr, int number) {
        //定义查找范围
        int min =0;
        int max =arr.length-1;
        //循环查找  min<=max
        while (min <= max){
        //计算出中间位置 mid
            int mid = (min + max) >> 1;
            //mid指向元素>numder
            if (arr[mid]>number){
                //表示要查找的元素在左边
                min = mid - 1;
            } else if(arr[mid]<number){
                //mid指向的元素<number
                //表示要查找的元素在右边
                min = mid + 1;
            }else {
                //mid指向的元素 == number
                return mid;
            }
        }
        //如果min大于max则表示元素不存在，返回-1
        return  -1;
    }
}
